home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / sbin / uselivemod < prev    next >
Text File  |  2006-05-11  |  2KB  |  71 lines

  1. #!/bin/bash
  2. # Use module while running LiveCD
  3. # include it into live directory structure on the fly
  4. # Or install it if no union is found at /
  5. #
  6. # Author: Tomas M. <http://www.linux-live.org>
  7.  
  8. MODULE="$1"
  9.  
  10. if [ "$MODULE" = "" ]; then
  11.    echo
  12.    echo "Use module on the fly while running Live CD"
  13.    echo "Usage: $0 module.mo"
  14.    exit
  15. fi
  16.  
  17. if [ -a ./liblinuxlive ]; then
  18.    . ./liblinuxlive
  19. else
  20.    . /usr/lib/liblinuxlive || exit 1
  21. fi
  22.  
  23. allow_only_root
  24. IMAGES=/mnt/live/memory/images
  25. MODULES=/mnt/live/memory/modules
  26.  
  27. # are we even using union?
  28. unionctl --query / >/dev/null 2>&1
  29. if [ $? -ne 0 ]; then
  30.    echo "Installing (unpacking) module $MODULE"
  31.    mo2dir $MODULE /
  32.    /sbin/ldconfig
  33.    exit 0
  34. fi
  35.  
  36. mkdir -p "$MODULES"
  37.  
  38. # test whether the module file is stored in union
  39. # if yes, then we must move it somewhere else (to RAM)
  40. unionctl --query "$MODULE" >/dev/null 2>&1
  41. if [ $? -eq 0 ]; then
  42.    echo "module file is stored inside the union, moving to $MODULES first..."
  43.    TARGET="$MODULES/`basename \"$MODULE\"`"
  44.    mv "$MODULE" "$TARGET"
  45.    if [ $? -ne 0 ]; then
  46.       echo "error copying module to memory, not enough free RAM? try df" >&2
  47.       rm "$TARGET"
  48.       return 2
  49.    fi
  50.    MODULE="$TARGET"
  51. fi
  52.  
  53. MOD="`union_insert_module / \"$MODULE\" $IMAGES`"
  54. if [ $? -ne 0 ]; then echo "error inserting module to live filesystem" >&2; exit 3; fi
  55.  
  56. # all executables in /etc/rc.d/ from this module will be started
  57. # with two arguments: "start" "mo". This happens only by this script (uselivemod),
  58. # not in the case when module is loaded during OS startup.
  59. find $IMAGES/$MOD/etc/rc.d -type f 2>/dev/null | while read SCRIPT; do
  60.    if [ "$SCRIPT" != "" -a -x "$SCRIPT" -a ! -d "$SCRIPT" ]; then
  61.       ${SCRIPT##$IMAGES/$MOD} start mo
  62.    fi
  63. done
  64.  
  65. # update ld cache if new ld.so.conf/cache exists in the module
  66.  
  67. if [ -e "$IMAGES/$MOD/etc/ld.so.conf" -o -e "$IMAGES/$MOD/etc/ld.so.cache" ]; then
  68.    echo "Module contains ld.so.conf or ld.so.cache, updating lib cache..."
  69.    /sbin/ldconfig
  70. fi
  71.